package main

import "fmt"

type student struct {
	ID    int
	Name  string
	Class string
}

// OperateStudent 学生的构造函数
func OperateStudent(id int, name string, class string) *student {
	return &student{
		ID:    id,
		Name:  name,
		Class: class,
	}
}

type studentManager struct {
	AllStudents []*student
}

// OperateStudentManager 构造函数
func OperateStudentManager() *studentManager {
	return &studentManager{
		AllStudents: make([]*student, 0, 100),
	}
}

// AddStudent 添加学生
func (s *studentManager) AddStudent(addStu *student) {
	s.AllStudents = append(s.AllStudents, addStu)
	fmt.Printf("新增学生 学号: %d, 姓名 : %s , 班级: %s 成功。\n", addStu.ID, addStu.Name, addStu.Class)
}

// EditStudent 编辑学生
func (s *studentManager) EditStudent(addStu *student) {
	for i, v := range s.AllStudents {
		if addStu.ID == v.ID {
			s.AllStudents[i] = addStu
			fmt.Printf(" 编辑学生 学号: %d, 姓名 : %s , 班级: %s 成功。\n", addStu.ID, addStu.Name, addStu.Class)
			return
		}
	}
	fmt.Println("查无此人")
}

// DeleteStudent 删除一个学生
func (s *studentManager) DeleteStudent(Stu *student) {
	for i, v := range s.AllStudents {
		if Stu.ID == v.ID {
			s.AllStudents = append(s.AllStudents[:i], s.AllStudents[i+1:]...)
			fmt.Printf("删除学生 学号: %d, 姓名 : %s , 班级: %s成功。\n", Stu.ID, Stu.Name, Stu.Class)
		}
	}
	return
}

// ShowStudent 展示所有学生
func (s *studentManager) ShowStudent() {
	for _, v := range s.AllStudents {
		fmt.Printf("学号: %d, 姓名 : %s , 班级: %s\n", v.ID, v.Name, v.Class)
	}
}
